Microprocessors can operate to control a myriad of hardware devices; an example of one such hardware device is an input/output (I/O) controller. For a microprocessor to properly control a hardware device, the microprocessor is directed by a series of instructions known as software. Software instructions exist on a variety of levels relative to the microprocessor. Software instructions that exist to directly control the microprocessor at a very basic level are typically known as firmware. When operational, the firmware and the microprocessor behave as a firmware system.
A basic input/output system (BIOS) developed by Phoenix Technologies Ltd. is an example of firmware. Typically, the BIOS operatively controls microprocessors having an “x86” architecture. Microprocessors having an “x86” architecture are similar to many microprocessors from Intel Corporation and Advanced Micro Devices, Incorporated (AMD). The BIOS is typically stored in a read only memory (ROM) and directs a microprocessor to test hardware devices when started. The BIOS also loads and starts an operating system, such as DOS or Windows, both produced by Microsoft Corporation. The BIOS also supports data transfers among hardware devices. The BIOS is fairly transparent to a user of the operating system.
Until recently, a BIOS would serve to load and start an operating system of a computer. However, advancements in software engineering have led to the development of a firmware interface known as an Extensible Firmware Interface (EFI), developed by Intel Corporation. The EFI includes a layer of software that resides between a firmware system and the operating system. The EFI offers a higher-level set of software controllers, known as drivers, as components to the firmware system. The controllers direct functions of the firmware system and in turn direct various hardware devices through a higher-level programming language, such as the “C” programming language. A benefit to the EFI includes decoupling the operating system from the firmware system, which makes the operating system substantially independent of the firmware system. Moreover, an interface between the firmware system and the operating system is easier to maintain since the EFI is typically written in the higher level programming language than the firmware, which may be written in an assembly programming language.
An EFI includes an application programming interface (API) having a command line interface known as a shell. The EFI may include a collection of boot services, runtime services, loaded drivers, and loaded protocols. The EFI shell is similar to other command line interfaces. An example of another command line interface is a DOS shell developed by Microsoft Corporation. While the DOS shell allows a user to access functions of the operating system, the EFI shell allows a user to access functions of a single firmware system. Accessing functions of the firmware system is performed through information gathering functions that obtain information relative to the firmware system. Since the EFI shell interacts with a single firmware system, the information gathering functions of the EFI shell serve to gain access to that particular firmware system. An illustration of the EFI can be seen in FIG. 1.
FIG. 1 shows a prior art software architecture including an EFI 102 for computing system 100. EFI 102 is communicatively connected to operating system 104. EFI 102 is also communicatively connected to firmware system 112. Firmware system 112 includes firmware instruction set 114 that is typically stored in a read only memory device. Firmware system 112 also includes hardware 116, which typically includes a microprocessor that accesses the read only memory device to process firmware instruction set 114.
EFI 102 includes EFI operating system loader 106, which serves to load and start operating system 104. EFI 102 also includes a variety of service functions in EFI boot service 108; the service functions include runtime services 105, boot devices 107, EFI drivers 109, and protocol handlers 111. These service functions, 105, 107, 109, and 111, start, commonly referred to as “booting” and “handshaking”, associated hardware devices when computer system 100 is initialized. EFI 102 also includes EFI shell 110, which allows a user to interact with firmware system 112 through the variety of functions stored in EFI boot service 108.
Firmware developers often develop and implement software tools through EFI shell 110. These software tools are occasionally necessary to direct the microprocessor to perform a new desired function. However, present information gathering functions of the EFI shell are developed for a single firmware system, such as firmware system 112. The information gathering functions are incapable of interacting with other firmware systems.
Many manufacturers of computer systems purchase microprocessors and develop firmware to suit their particular needs. Some manufactures even develop multiple firmware systems for different products. EFI 102 and EFI shell 110 are not portable to multiple firmware platforms. Accordingly, the prior art requires matching between the particular firmware system 112 and EFI 102, which complicates the design of information gathering functions.
The invention provides certain features to advance the state of the art by providing, among other features, a detector for detecting information about a firmware system. Other features will be apparent in the description that follows.